package com.maykk.Demo04;

import java.sql.*;


/**
 * @ClassName: Demo04Test
 * @Description: TODO 防止 sql 注入
 * @Author: MaykkStar@163.com
 */
public class Demo04Test {
    public static void main(String[] args) throws SQLException {

        readByName("马一坤");
    }

    /**
     * 根据姓名搜索
     *
     * @param name 姓名
     * @throws SQLException 数据库错误
     */
    private static void readByName(String name) throws SQLException {
        // 先定义 sql 语句
        String sql = "select id,name,sex,age,score,tel from stu where name = ?";
        // 实例化工具类
        JdbcUtilsSing jdbc = JdbcUtilsSing.getInstance();
        // 创建工具类对象
        Connection conn = jdbc.getConnection();
        // 创建 prepareStatement 对象用来执行 sql 语句
        PreparedStatement pst = conn.prepareStatement(sql);
        // 将 sql 语句中的问号替换，如果有多个问号要多次替换
        pst.setString(1, name);
        // 执行 sql 语句
        ResultSet rs = pst.executeQuery();
        // 输出 sql 语句
        showRes(rs);
        // 释放资源
        jdbc.free(rs, pst, conn);
        System.out.println(sql);
    }

    /**
     * 输出结果集
     *
     * @param rs 结果对象
     * @throws SQLException 数据库对象
     */
    private static void showRes(ResultSet rs) throws SQLException {
        while (rs.next()) {
            System.out.println(
                    rs.getInt("id") + "\t" +
                            rs.getString("name") + "\t" +
                            rs.getString("sex") + "\t" +
                            rs.getInt("age") + "\t" +
                            rs.getFloat("score") + "\t" +
                            rs.getString("tel") + "\t"
            );
        }
    }
}
